package com.crazy.common.date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils;
/**
 * Spring3开始的类型转换系统<br>
 * 类型转换器，用于转换S类型到 T类型，此接口的实现必须是线程安全的且可以被共享。
 * @author Zhang Weiwei
 * @datetime 2013-8-25下午12:09:39
 */
public class StringToDateConverter implements Converter<String, Date> {
	static final DateFormat[] dfs = {
			new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
			new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"),
			new SimpleDateFormat("yyyy-MM-dd HH:mm"),
			new SimpleDateFormat("yyyy/MM/dd HH:mm"),
			new SimpleDateFormat("yyyy-MM-dd"),
			new SimpleDateFormat("yyyy/MM/dd"),
			new SimpleDateFormat("HH:mm:ss")};
	@Override
	public Date convert(String source) {
		if (StringUtils.hasText(source)) {
			Date date = null;
			for (DateFormat df : dfs) {
				try {
					date = df.parse(source);
					break;
				} catch (Exception e) {
					continue;
				}
			}
			return date;
		} else {
			return null;
		}
	}
}
